package com.inkyi.assistant.app.base;

import javax.swing.*;
import java.io.Serializable;

/**
 * 编辑器
 *
 * @author lihongkun
 * @date 2023/11/16
 */
public interface InkEditor<T> {

    /**
     * 设置内容
     *
     * @param content 文本
     */
    void setContent(T content);

    /**
     * 得到内容
     *
     * @return {@link String}
     */
    T getContent();

    /**
     * 获取编辑器类型
     *
     * @return {@link String}
     */
    String getEditorType();

    /**
     * 获得组件
     *
     * @return {@link JComponent}
     */
    JComponent getComponent();

    /**
     * 添加参数
     *
     * @param key   关键
     * @param value 价值
     */
    void putProperty(Serializable key, Object value);

    /**
     * 查找参数
     *
     * @param key 关键
     * @return {@link Object }
     */
    Object getProperty(Serializable key);

    /**
     * 删除参数
     *
     * @param key 关键
     * @return {@link Object }
     */
    void removeProperty(Serializable key);
}
